home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
PWAULTP3.ZIP
/
PWAPRGMS.A02
/
PWA95
/
PWAPCP01.ZIP
/
BMAIL11
/
BMAIL11S.ZIP
/
MAILUU.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1995-07-20
|
8KB
|
429 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Integer INTEGER001
Integer INTEGER002
Integer INTEGER003
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
String STRING001
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String TSTRING016(100)
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING027
String TSTRING028(8)
String STRING029
String TSTRING030(8)
String STRING031
;------------------------------------------------------------------------------
FDefIn 7
GetUser
U_FSE = 1
U_FSEP = 0
PutUser
STRING001 = "1.00"
STRING022 = Chr(And(212, 127)) + Chr(And(232, 127)) + Chr(And(233, 127)) + Chr(And(243, 127)) + Chr(And(160, 127)) + Chr(And(243, 127))
STRING023 = Chr(And(239, 127)) + Chr(And(230, 127)) + Chr(And(244, 127)) + Chr(And(247, 127)) + Chr(And(225, 127)) + Chr(And(242, 127))
STRING024 = Chr(And(229, 127)) + Chr(And(160, 127)) + Chr(And(233, 127)) + Chr(And(243, 127)) + Chr(And(160, 127)) + Chr(And(213, 127))
STRING025 = Chr(And(206, 127)) + Chr(And(210, 127)) + Chr(And(197, 127)) + Chr(And(199, 127)) + Chr(And(201, 127)) + Chr(And(211, 127))
STRING026 = Chr(And(212, 127)) + Chr(And(197, 127)) + Chr(And(210, 127)) + Chr(And(197, 127)) + Chr(And(196, 127)) + Chr(And(161, 127))
STRING027 = STRING022 + STRING023 + STRING024 + STRING025 + STRING026
INTEGER003 = PcbNode()
INTEGER001 = 0
FOpen 1, PPEPath() + "MAILUU.CFG", 0, 0
FGet 1, STRING007
FGet 1, STRING010
FGet 1, STRING011
FGet 1, STRING005
FGet 1, STRING008
FGet 1, STRING012
FGet 1, STRING013
FGet 1, STRING014
If (Ferr(1)) Then
Goto LABEL007
Endif
FClose 1
If (CurSec() < STRING013) Then
Cls
PrintLn
PrintLn
PrintLn " You do not have high enough security to use NETMAIL"
Delay 36
End
Endif
If (Len(Strip(STRING010, " ") + Strip(STRING011, " ")) < 8) Then
Goto LABEL010
Endif
STRING029 = ""
For INTEGER005 = 1 To 4
TSTRING028(INTEGER005) = Mid(Strip(STRING010, " "), Len(STRING010) - INTEGER005 + 1, 1) + Mid(Strip(STRING011, " "), Len(STRING011) - INTEGER005 + 1, 1)
STRING029 = STRING029 + TSTRING028(INTEGER005)
Next
TSTRING030(1) = Asc(Mid(STRING029, 1, 1)) % 6
TSTRING030(2) = Asc(Mid(STRING029, 2, 1)) % 7
TSTRING030(3) = Asc(Mid(STRING029, 3, 1)) % 8
TSTRING030(4) = Asc(Mid(STRING029, 4, 1)) % 9
TSTRING030(5) = Asc(Mid(STRING029, 5, 1)) % 7
TSTRING030(6) = Asc(Mid(STRING029, 6, 1)) % 5
TSTRING030(7) = Asc(Mid(STRING029, 7, 1)) % 9
TSTRING030(8) = Asc(Mid(STRING029, 8, 1)) % 4
STRING029 = ""
For INTEGER005 = 1 To 8
STRING029 = STRING029 + TSTRING030(INTEGER005)
Next
If (STRING029 <> STRING012) Then
STRING031 = "Y"
Else
STRING031 = "N"
Endif
Join STRING014
If (Upper(STRING008) <> "NONE") Then
If (Right(STRING008, 1) <> "\") Then
STRING008 = STRING008 + "\"
Endif
If (Mid(STRING008, 2, 2) <> ":\") Then
Else
Endif
:LABEL001
Cls
DispFile STRING007, 1
If (STRING031 == "Y") Then
PrintLn "@X1FBaseMail v" + STRING001 + " Copyright 1995, Steve Keith"
Else
PrintLn "@X1FBaseMail v" + STRING001 + Space(55 - Len(STRING001) - Len(STRING011)) + "Registered to " + STRING011
Endif
If (STRING031 == "Y") Then
PrintLn "@XDF " + STRING027 + " "
PrintLn "@X02 5 second delay until registered "
PrintLn
PrintLn
Delay 80
Endif
If (Upper(STRING008) <> "NONE") Then
InputStr "Choose option 1, 2 or 3: ", INTEGER002, 14, 1, "123", 128 + 64
Else
InputStr "Choose option 1 or 2: ", INTEGER002, 14, 1, "12", 128 + 64
Endif
Cls
:LABEL002
Select Case (INTEGER002)
Case 1
PrintLn
Input "Type in person's name, or hit Enter to abort:", STRING002
If (Len(STRING002) <= 1) Then
Goto LABEL001
Endif
If (Len(Trim(STRING002, " ")) < 4) Then
Goto LABEL008
Endif
PrintLn
Input "Subject: ", STRING003
If (Len(Trim(STRING003, " ")) < 1) Then
Goto LABEL008
Endif
PrintLn
If (INTEGER001 <> 1) Then
Input "Fido Address (example 1:330/205)", STRING004
Else
INTEGER001 = 0
Endif
If (Len(Trim(STRING004, " ")) < 5) Then
Goto LABEL008
Endif
PrintLn
KbdStuff "E" + Chr(13) + STRING002 + Chr(13)
KbdStuff STRING003 + Chr(13)
KbdStuff "(" + STRING004 + ")" + Chr(13)
KbdStuff "(HOLD)"
KbdStuff Chr(13) + Chr(13)
KbdStuff "BaseMail v1.0" + Chr(13)
KbdStuff Chr(13) + Chr(13)
Case 2
PrintLn "Enter FULL Internet Address (example: steve.keith@swcbbs.com)"
Input Chr(13), STRING006
PrintLn Chr(13)
If (Len(Trim(STRING006, " ")) < 7) Then
Goto LABEL008
Endif
PrintLn "Enter the SUBJECT on the next line"
Input Chr(13), STRING003
PrintLn
KbdStuff "E" + Chr(13) + "UUCP" + Chr(13)
KbdStuff STRING003 + Chr(13)
KbdStuff "(" + STRING005 + ")"
KbdStuff Chr(13)
KbdStuff "To: " + STRING006
KbdStuff Chr(13) + Chr(13)
KbdStuff "BaseMail v1.0" + Chr(13)
Case 3
INTEGER005 = 0
StartDisp 1
Input "Enter Sysop's LAST name, or address to search for", STRING009
PrintLn
Input "How many matches do you want? (Max/Default = 100)", STRING015
If ((STRING015 == 0) || (STRING015 > 100)) Then
STRING015 = 100
Endif
FCreate 2, PPEPath() + "NLS" + String(INTEGER003) + ".BAT", 2, 3
If (Ferr(2)) Then
Goto LABEL009
Endif
FPutLn 2, "@ECHO OFF"
FPutLn 2, Left(STRING008, 3)
FPutLn 2, "CD " + Left(STRING008, Len(STRING008) - 1)
FPutLn 2, "QFRONT /MAX:" + STRING015 + " /SEARCH:" + STRING009 + " /NODE:" + String(INTEGER003)
FPutLn 2, "IF EXIST QSRCH" + String(INTEGER003) + ".DAT GOTO END"
FPutLn 2, "REM>QSRCH" + String(INTEGER003) + ".DAT"
FPutLn 2, "ECHO NO MATCHES! > QSRCH" + String(INTEGER003) + ".DAT"
FPutLn 2, ":END"
If (Ferr(2)) Then
Goto LABEL009
Endif
FClose 2
Shell 1, INTEGER004, PPEPath() + "NLS" + String(INTEGER003) + ".BAT", STRING009
FOpen 7, STRING008 + "QSRCH" + String(INTEGER003) + ".DAT", 0, 3
FDefIn 7
:LABEL003
If (Ferr(7)) Goto LABEL006
Inc INTEGER005
If (INTEGER005 < 10) Then
STRING021 = " "
ElseIf (INTEGER005 < 100) Then
STRING021 = " "
Else
STRING021 = ""
Endif
FDGet TSTRING016(INTEGER005)
If (Strip(TSTRING016(INTEGER005), " ") == "NOMATCHES!") Then
Cls
PrintLn
PrintLn
PrintLn "The specified string could not be found"
PrintLn
PrintLn
More
ElseIf (Ferr(7)) Then
INTEGER005 = INTEGER005 - 1
If (INTEGER005 % 4 == 0) Then
Goto LABEL006
Else
:LABEL004
Input "Choose a number: ", INTEGER006
If (INTEGER006 > INTEGER005) Then
Goto LABEL004
ElseIf (INTEGER006 < 1) Then
Goto LABEL006
Else
STRING004 = Trim(TSTRING016(INTEGER006), " ")
INTEGER001 = 1
Else
Endif
Endif
FDGet STRING017
FDGet STRING018
FDGet STRING019
FDGet STRING020
TSTRING016(INTEGER005) = Left(TSTRING016(INTEGER005), 12)
STRING017 = Left(STRING017, 30)
STRING018 = Left(STRING018, 30)
STRING019 = Left(STRING019, 30)
STRING020 = Left(STRING020, 30)
PrintLn
PrintLn "@X09[" + STRING021 + String(INTEGER005) + "] - @X0A" + TSTRING016(INTEGER005) + " @X0E" + STRING020
PrintLn " @X09Name: " + STRING017
PrintLn " @X09City: " + STRING018
PrintLn " @X09System: " + STRING019
PrintLn "_________________________________________________________"
If (INTEGER005 % 4 == 0) Then
:LABEL005
Input "Choose a number: ", INTEGER006
If (INTEGER006 > INTEGER005) Then
Goto LABEL005
ElseIf (INTEGER006 < 1) Then
Cls
PrintLn
PrintLn "@X09[" + STRING021 + String(INTEGER005) + "] - @X0A" + TSTRING016(INTEGER005) + " @X0E" + STRING020
PrintLn " @X09Name: " + STRING017
PrintLn " @X09City: " + STRING018
PrintLn " @X09System: " + STRING019
PrintLn "_________________________________________________________"
Else
STRING004 = Trim(TSTRING016(INTEGER006), " ")
INTEGER001 = 1
Else
Endif
Goto LABEL003
Endif
Endif
:LABEL006
FClose 7
Cls
Delete PPEPath() + "NLS" + String(INTEGER003) + ".BAT"
INTEGER002 = 1
If (INTEGER001 == 1) Then
Goto LABEL002
Else
Goto LABEL001
Endif
Case 1
End
Case Else
Goto LABEL001
End Select
Goto LABEL011
:LABEL007
PrintLn
PrintLn "Error reading CFG file"
PrintLn
Goto LABEL011
:LABEL008
PrintLn Chr(13)
PrintLn "Input appears to be too short" + Chr(13)
Goto LABEL011
Endif
PrintLn Chr(13)
PrintLn "ERROR IN CFG FILE"
Goto LABEL011
:LABEL009
PrintLn Chr(13)
PrintLn "ERROR OPENING OR CREATING FILE"
Goto LABEL011
:LABEL010
PrintLn Chr(13)
PrintLn "ERROR: BBSNAME AND USERNAME IN CFG ARE TOO SHORT"
PrintLn "Must be greater than 8 characters total"
:LABEL011
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 2 End
; 6 Cls
; 1 More
; 81 Goto
; 48 Let
; 47 PrintLn
; 37 If
; 1 DispFile
; 9 Input
; 1 FCreate
; 2 FOpen
; 3 FClose
; 8 FGet
; 8 FPutLn
; 1 StartDisp
; 1 GetUser
; 1 PutUser
; 1 Delete
; 2 InputStr
; 2 Delay
; 1 Inc
; 1 Shell
; 14 KbdStuff
; 1 Join
; 2 FDefIn
; 5 FDGet
;
;
; ■ Functions used :
;
; 10 %
; 111 +
; 6 -
; 10 ==
; 6 <>
; 13 <
; 3 <=
; 3 >
; 4 >=
; 37 !
; 4 &&
; 3 ||
; 11 Len(
; 2 Upper()
; 11 Mid()
; 7 Left()
; 1 Right()
; 1 Space()
; 5 Ferr()
; 54 Chr()
; 8 Asc()
; 6 Trim()
; 5 Strip()
; 10 String()
; 4 PPEPath()
; 1 PcbNode()
; 1 CurSec()
; 30 And()
;
;------------------------------------------------------------------------------
;
; Analysis flags : WS
;
; W - Write user ■ 5
; Program writes a user record. Although this may be normal for a
; User Editor, it may also be a way to modify an account level.
; ■ Search for : PUTUSER
;
; S - Shell to DOS ■ 5
; This may be normal if the PPE need to execute an external command,
; but may be actually anything... nasty (formating HD, rebooting,...)
; or usefull (sorting, maintenance,...). Check!
; ■ Search for : SHELL
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 2 For/Next
; 0 While/EndWhile
; 30 If/Then or If/Then/Else
; 1 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------